home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 22 / AACD 22.iso / AACD / Programming / powerd / examples / rtgppc.d < prev    next >
Encoding:
Text File  |  2000-11-23  |  2.7 KB  |  119 lines

  1. OPT    PPC
  2.  
  3. MODULE    'rtgmaster',
  4.             'rtgmaster/rtgmaster',
  5.             'rtgmaster/rtgc2p',
  6.             'rtgmaster/rtgsublibs'
  7. MODULE    'exec/memory',
  8.             'utility/tagitem'
  9.  
  10. DEF    nbuf=0,    // rendering buffer
  11.         c2psig,    // c2p signal
  12.  
  13.         width,    // buffer dimensions
  14.         height
  15.  
  16. PROC Go(rsc,bin:PTR TO UBYTE)
  17.     DEF    x,y,n=0
  18.     WHILE n<128
  19.         FOR x:=0 TO width-1
  20.             FOR y:=0 TO height-1
  21.                 bin[y*width+x]:=x*y+n
  22.             ENDFOR
  23.         ENDFOR
  24.     EXITIF ChangeBuffer(rsc,bin)=FALSE
  25.         n++
  26. //    EXITIF Mouse()
  27. //        IF n\10=0 THEN PrintF('\d\b',n)
  28.     ENDWHILE
  29. //    Delay(250)
  30. ENDPROC
  31.  
  32. PROC ChangeBuffer(rsc:PTR TO RtgScreen,bin:PTR TO UBYTE)(LONG)
  33.     DEF    buf
  34.     IF buf:=GetBufAdr(rsc,nbuf)
  35. //        CallRtgC2P(rsc,buf,bin,c2psig,0,0,width,height,c2p_1x1)
  36.         CopyRtgBlit(rsc,buf,bin,0,0,0,width,height,width,height,0,0)
  37.         RtgWaitTOF(rsc)
  38.         SwitchScreens(rsc,nbuf)
  39. //        nbuf++
  40.         IF nbuf=2 THEN nbuf:=0
  41.     ELSE RETURN FALSE
  42. //    PrintF('\d,$\h\n',nbuf,buf)
  43. ENDPROC TRUE
  44.  
  45. DEF    RTGMasterBase
  46.  
  47. PROC main()
  48.     DEF    req:PTR TO ScreenReq,
  49.             rsc:PTR TO RtgScreen,
  50.             rgb[800]:ULONG,
  51.             bin:PTR TO UBYTE
  52.     DEF    n,tags:PTR TO TagItem,i
  53.  
  54.     // open the rtgmaster.library
  55.     IF RTGMasterBase:=OpenLibrary('rtgmaster.library',23)
  56.  
  57.         // open the rtg screen requester to select screenmode and dimensions
  58.         IF req:=RtgScreenModeReq([
  59.                 smr_MinWidth,320,
  60.                 smr_MinHeight,200,
  61.                 smr_MaxWidth,1024,
  62.                 smr_MaxHeight,768,
  63.                 smr_ChunkySupport,512,
  64.                 smr_PlanarSupport,-1,
  65.                 smr_Buffers,2,                                // double buffering
  66.                 smr_PrefsFileName,'rtgtest.prefs',    // preferences file
  67.                 smr_ForceOpen,TRUE,                        // always open this requester
  68.                 TAG_END])
  69.  
  70.             // open requested screen
  71.             IF rsc:=OpenRtgScreen(req,NIL)
  72.  
  73.                 GetRtgScreenData(rsc,tags:=[
  74.                     grd_Width,0,
  75.                     grd_Height,0,
  76.                     TAG_END])
  77.                 width:=tags[0].Data
  78.                 height:=tags[1].Data
  79.  
  80.                 // get c2p signal
  81.                 IF (c2psig:=AllocSignal(-1))<>-1
  82.  
  83.                     // lock the screen for private use
  84.                     LockRtgScreen(rsc)
  85.  
  86.                     // setup colours of the screen
  87.  
  88.                     i:=0
  89.                     rgb[i++]:=256<<16
  90.                     FOR n:=000 TO 063 DO rgb[i++]:=n<<26;    rgb[i++]:=n<<26;    rgb[i++]:=n<<26
  91.                     FOR n:=064 TO 127 DO rgb[i++]:=n<<26;    rgb[i++]:=0;        rgb[i++]:=0
  92.                     FOR n:=128 TO 191 DO rgb[i++]:=0;        rgb[i++]:=n<<26;    rgb[i++]:=0
  93.                     FOR n:=192 TO 255 DO rgb[i++]:=0;        rgb[i++]:=0;        rgb[i++]:=n<<26
  94.                     rgb[i]:=0
  95.                     LoadRGBRtg(rsc,rgb)
  96.  
  97.                     IF bin:=AllocVec(width*height,MEMF_PUBLIC|MEMF_CLEAR)
  98.  
  99.                         Go(rsc,bin)
  100.  
  101.                         FreeVec(bin)
  102.                     ELSE PrintF('Not enough memory!\n')
  103.  
  104.                     // unlock locked screen
  105.                     UnlockRtgScreen(rsc)
  106.  
  107.                     FreeSignal(c2psig)
  108.                 ELSE PrintF('Can''t get c2p signal!\n')
  109.  
  110.                 CloseRtgScreen(rsc)
  111.             ELSE PrintF('Can''t open rtg screen!\n')
  112.  
  113.             FreeRtgScreenModeReq(req)
  114.         ELSE PrintF('Can''t open rtg requester!\n')
  115.  
  116.         CloseLibrary(RTGMasterBase)
  117.     ELSE PrintF('Can''t open rtgmaster.library v23+!\n')
  118. ENDPROC
  119.